$(document).ready(function() {

	$('.aplicativo_lista').each(function() {

		// Armazenando este objeto para que
		// futuras referencias sejam otimizadas.
		var __lista = $(this);

		// Diferenciando as linhas umas das outras (zebra).
		__lista.find('.aplicativo_lista_linha:odd').addClass('aplicativo_lista_linha_alternativa')

		// Marcando visualmente todas as linhas pre-selecionadas.
		__lista.find('.aplicativo_lista_linha input:checkbox').each(function() {

			// Armazenando este objeto para que
			// futuras referencias sejam otimizadas.
			var __linha = $(this).parent().parent();
			var __selecao = $(this).attr('checked');

			// Caso este checkbox esteja selecionado,
			// marcar visualmente esta linha, caso
			// contrario remover qualquer marcacao.
			if (__selecao) {
				__linha.addClass('aplicativo_lista_linha_selecionada');
			}
			else {
				__linha.removeClass('aplicativo_lista_linha_selecionada');
			}
		});

		// Associando a operacao de marcar visualmente
		// a selecao de cada uma das linhas.
		__lista.find('.aplicativo_lista_linha input:checkbox').click(function() {

			// Armazenando este objeto para que
			// futuras referencias sejam otimizadas.
			var __linha = $(this).parent().parent();
			var __selecao = $(this).attr('checked');

			// Caso este checkbox esteja selecionado,
			// marcar visualmente esta linha, caso
			// contrario remover qualquer marcacao.
			if (__selecao) {
				__linha.addClass('aplicativo_lista_linha_selecionada');
			}
			else {
				__linha.removeClass('aplicativo_lista_linha_selecionada');
			}
		});

		// Associando a operacao de marcar
		// todos as linhas de uma so vez.
		__lista.find('.aplicativo_lista_cabecalho input:checkbox').click(function() {

			// Armazenando estes valores para que
			// futuras referencias sejam otimizadas.
			var __coluna = $(this).parent().attr('cellIndex');
			var __selecao = $(this).attr('checked');

			// Marcando visualmente todas as linhas .
			__lista.find('.aplicativo_lista_linha td:nth-child(' + (__coluna + 1) + ') input:checkbox').each(function() {
				// Armazenando este objeto para que
				// futuras referencias sejam otimizadas.
				var __linha = $(this).parent().parent();

				// Cloando o estado do checkbox principal.
				this.checked = __selecao;

				// Caso este checkbox esteja selecionado,
				// marcar visualmente esta linha, caso
				// contrario remover qualquer marcacao.
				if (__selecao) {
					__linha.addClass('aplicativo_lista_linha_selecionada');
				}
				else {
					__linha.removeClass('aplicativo_lista_linha_selecionada');
				}
			});
		});

		// Marcando visualmente todas as linhas pre-selecionadas.
		__lista.find('.aplicativo_lista_linha input:radio').each(function() {

			// Armazenando este objeto para que
			// futuras referencias sejam otimizadas.
			var __linha = $(this).parent().parent();
			var __selecao = $(this).attr('checked');

			// Caso este radio esteja selecionado,
			// marcar visualmente esta linha, caso
			// contrario remover qualquer marcacao.
			if (__selecao) {
				__linha.siblings().removeClass('aplicativo_lista_linha_selecionada');
				__linha.addClass('aplicativo_lista_linha_selecionada');
			}
			else {
				__linha.removeClass('aplicativo_lista_linha_selecionada');
			}
		});

		// Associando a operacao de marcar visualmente
		// a selecao de cada uma das linhas.
		__lista.find('.aplicativo_lista_linha input:radio').click(function() {

			// Armazenando este objeto para que
			// futuras referencias sejam otimizadas.
			var __linha = $(this).parent().parent();
			var __selecao = $(this).attr('checked');

			// Caso este radio esteja selecionado,
			// marcar visualmente esta linha, caso
			// contrario remover qualquer marcacao.
			if (__selecao) {
				__linha.siblings().removeClass('aplicativo_lista_linha_selecionada');
				__linha.addClass('aplicativo_lista_linha_selecionada');
			}
			else {
				__linha.removeClass('aplicativo_lista_linha_selecionada');
			}
		});
	});
});